/**
 * 资源回退中间件
 * 用于处理静态资源不存在的情况，提供默认资源
 */
const fs = require('fs');
const path = require('path');

/**
 * 创建资源回退中间件
 * @param {string} defaultPath 默认资源路径
 * @returns {Function} 中间件函数
 */
const resourceFallback = (defaultPath) => {
  return (req, res, next) => {
    // 获取请求的完整路径
    const requestedPath = path.join(__dirname, '../..', req.path);
    
    // 检查文件是否存在
    fs.access(requestedPath, fs.constants.F_OK, (err) => {
      if (err) {
        // 资源不存在，使用默认资源
        const defaultResourcePath = path.join(__dirname, '../..', defaultPath);
        return res.sendFile(defaultResourcePath, (err) => {
          if (err) {
            // 如果默认资源也不存在，继续到下一个中间件
            console.error(`默认资源不存在: ${defaultPath}`);
            next();
          }
        });
      }
      // 资源存在，继续处理
      next();
    });
  };
};

module.exports = { resourceFallback };